////非虚的世界（没有虚函数的程序）
//#include <iostream>
//using namespace std;
//
//class Shape {
//public:
//	virtual void Draw() { cout << "Shape::Draw()" << endl; }//虚函数（原始版本）
//private:
//	int m_x;
//	int m_y;
//};
//class Rect :public Shape {
//public:
//	void Draw() { cout << "Rect::Draw" << endl; }//虚函数(编译器补virtual),与基类的Draw构成覆盖关系（覆盖版本）
//private:
//	int m_rx;
//	int m_ry;
//};
//class Circle :public Shape {
//public:
//	void Draw() { cout << "Circle::Draw()" << endl; }//虚函数(编译器补virtual)与基类的Draw构成覆盖关系（覆盖版本）
//private:
//	int m_rx;
//	int m_ry;
//};
//class Circle :public Shape {
//public:
//	void Draw() { cout << "Circle::Draw()" << endl; }
//	void foo(){}
//private:
//	int m_radius;
//};
//
//int main(void) {
//	cout << "_-------------利用对象调用非虚的成员函数----------" << endl;
//	//哪个类对象就调用哪个类的普通成员函数（对象的自洽性）
//	Shape s;
//	s.Draw();//Shape::Draw
//	Rect r;
//	r.Draw();//Rect::Draw
//	Circle c;
//	c.Draw();//Circle::Draw
//	cout << "-------------利用指针调用非虚的成员函数--------" << endl;
//	//利用基类类型的指针，调用成员虚函数，调用的具体是哪个类中的虚函数，由指针指向的对象的类型来决定
//	Shape* ps = &s;
//	ps->Draw();//Shape::Draw（不是多态）
//	ps = &r;
//	ps->Draw();//Rect::Draw（是多态）
//	ps = &c;
//	ps->Draw();//Circle::Draw（是多态）
//	//如果调用子类所特有的成员函数将报告编译器错误
//	//ps.foo();
//	//编译器简单而粗暴的根据指针本身的类型来确定到底调用哪个类的普通成员函数
//	return 0;
//}